package com.sz.admin.web.controller;

import cn.dev33.satoken.annotation.SaCheckLogin;
import com.mybatisflex.core.query.QueryWrapper;
import com.sz.admin.dtuftpinfo.pojo.dto.DtuFtpInfoListDTO;
import com.sz.admin.dtuftpinfo.pojo.vo.DtuFtpInfoVO;
import com.sz.admin.dtuftpinfo.service.DtuFtpInfoService;
import com.sz.core.common.entity.ApiPageResult;
import com.sz.core.common.entity.ApiResult;
import com.sz.core.common.entity.LoginUser;
import com.sz.core.common.entity.PageResult;
import com.sz.core.util.PageUtils;
import com.sz.netty.entity.DtuFtpInfo;
import com.sz.security.config.LoginType;
import com.sz.security.core.util.LoginUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

import static com.mybatisflex.core.query.QueryMethods.column;

/**
 * 车辆DTU控制器
 */
@Tag(name = "车辆DTU管理")
@RestController
@RequestMapping("/web/vehicle-dtu")
@RequiredArgsConstructor
public class VehicleDtuController {

    private final DtuFtpInfoService dtuFtpInfoService;

    /**
     * 分页查询DTU FTP设备信息列表
     *
     * @param dto 查询参数
     * @return DTU FTP设备信息分页列表
     */
    @Operation(summary = "分页查询DTU FTP设备信息")
    @SaCheckLogin(type = LoginType.WEB)
    @GetMapping("/page")
    public ApiResult<PageResult<DtuFtpInfoVO>> pageDtuFtpInfo(DtuFtpInfoListDTO dto) {
        // 1. 获取当前登录用户
        LoginUser loginUser = LoginUtils.getLoginUserByType(LoginType.WEB);
        if (loginUser == null) {
            return ApiPageResult.success(PageUtils.getPageResult(new ArrayList<>()));
        }

        // 2. 构建查询条件
        QueryWrapper queryWrapper = QueryWrapper.create()
                .from(DtuFtpInfo.class)
                .orderBy(DtuFtpInfo::getId, false); // 按ID降序排列

        // 3. 应用查询过滤条件
        if (dto.getDeviceId() != null && !dto.getDeviceId().isEmpty()) {
            queryWrapper.and(DtuFtpInfo::getDeviceId).eq(dto.getDeviceId());
        }
        if (dto.getStatus() != null) {
            queryWrapper.and(DtuFtpInfo::getStatus).eq(dto.getStatus());
        }
        if (dto.getVehicleNumber() != null && !dto.getVehicleNumber().isEmpty()) {
            queryWrapper.and(DtuFtpInfo::getVehicleNumber).eq(dto.getVehicleNumber());
        }
        if (dto.getCapacity() != null && !dto.getCapacity().isEmpty()) {
            queryWrapper.and(DtuFtpInfo::getCapacity).eq(dto.getCapacity());
        }

        // 4. 执行分页查询
        com.mybatisflex.core.paginate.Page<DtuFtpInfoVO> page = 
            dtuFtpInfoService.pageAs(
                PageUtils.getPage(dto), 
                queryWrapper, 
                DtuFtpInfoVO.class
            );
        //
            return ApiPageResult.success(page);
    }
}